Method and system for on-demand communities

ABSTRACT

In an embodiment, communities are generated on demand. In this specification a community is a group of webpages in which users share ideas with one another by posting ideas and sending messages for one another to read. An on-demand community is a community that may be created via tools specialized for creating communities, with just a few keys strokes and/or mouse clicks and by adding information (e.g., about the members and/or the topic or set of topics that the community is focused upon), such that a community may be established within a short amount of time, such as a few minutes or a few hours. Optionally, the communities may be initially populated with ideas related to a particular topic or set of topics. Optionally, each member may be provided with tools for establishing one or more profile page and/or one or more friend pages.

CLAIM OF PRIORITY

This application is a continuation of U.S. application Ser. No.13/554,934, filed Jul. 20, 2012, which is a continuation of U.S.application Ser. No. 12/151,302, filed May 5, 2008, which claims thebenefit of U.S. Provisional Patent Application No. 60/927,616, filed May4, 2007, the entire contents of which are incorporated herein byreference

COPYRIGHT NOTICE

A portion of the disclosure of this patent document contains materialwhich is subject to copyright protection. The copyright owner has noobjection to the facsimile reproduction by anyone of the patent documentor the patent disclosure, as it appears in the Patent and TrademarkOffice patent file or records, but otherwise reserves all copyrightrights whatsoever.

CROSS REFERENCE TO RELATED APPLICATIONS

The following commonly owned, co-pending United States patents andpatent applications, including the present application, are related toeach other. Each of the other patents/applications are incorporated byreference herein in its entirety:

U.S. patent application Ser. No. 11/825,393 entitled SYSTEM AND METHODFOR TRACKING DOCUMENTS IN AN ON-DEMAND SERVICE, by Timothy Barker etal., filed Jul. 6, 2007;

U.S. patent application Ser. No. 11/880,197 entitled SYSTEM AND METHODFOR STORING DOCUMENTS ACCESSED BY MULTIPLE USERS IN AN ON-DEMANDSERVICE, by Timothy Barker et al., filed Jul. 20, 2007;

U.S. patent application Ser. No. 11/893,617 entitled METHOD AND SYSTEMFOR PUSHING DATA TO SUBSCRIBERS IN AN ON-DEMAND SERVICE, by TimothyBarker et al., filed Aug. 15, 2007;

U.S. patent application Ser. No. 11/879,535 entitled SYSTEM AND METHODFOR TRACKING DOCUMENTS IN AN ON-DEMAND SERVICE, by Timothy Barker etal., filed Jul. 17, 2007; and

U.S. patent application Ser. No. 12/151,302 entitled METHOD AND SYSTEMFOR ON-DEMAND COMMUNITIES, by Norimasa Yoshida et al., filed May 5,2008, the entire contents of which are incorporated herein by reference.

FIELD OF THE INVENTION

The current invention relates generally to method and system foron-demand communities in a database network system, and moreparticularly to method and system for on-demand communities in amulti-tenant database network system.

BACKGROUND

The subject matter discussed in the background section should not beassumed to be prior art merely as a result of its mention in thebackground section. Similarly, a problem mentioned in the backgroundsection or associated with the subject matter of the background sectionshould not be assumed to have been previously recognized in the priorart. The subject matter in the background section merely representsdifferent approaches, which in and of themselves may also be inventions.

Some forms of obtaining customer feedback are focus groups and usermeetings. However, focus groups and user meetings can be expensive torun. Additionally, it can be difficult to determine whether theconsensus of a focus group is representative of the actual customerbase, because different focus groups may at least sometimes indicatedifferent conclusions. Conventionally, applications, such as databases,file systems, word processors and the like, were delivered to the endusers in the form of software. Feedback mechanisms for these productsexist typically in the form of problem reports, quality surveys and thelike.

With the advent of the web, however, software-like utility isincreasingly delivered to users as a service. These so named “softwareas a service” approaches may include a group of end users, who may wishto use the service offering collaboratively, or who may wish to sharetheir input as a community, making the old problem report or feedbacksurvey cumbersome or unsatisfactory.

Accordingly, it is desirable to provide techniques enabling sharingideas to improve service offerings.

BRIEF SUMMARY

In an embodiment, communities for enterprises and/or business aregenerated on demand. In this specification a community is a group ofwebpages in which users share ideas with one another by posting ideasand sending messages for one another to read. An on-demand community isa community that may be created via tools specialized for creatingcommunities, with just a few keys strokes and/or mouse clicks and byadding information (e.g., about the members and/or the topic or set oftopics that the community is focused upon), such that a community may beestablished within a short amount of time, such as a few minutes or afew hours. In other words, in an embodiment the focus of the communitiesmay be on on-demand enterprise communities, which are communitiesstructured around a business' ecosystem: partners, customers, vendors,employees, etc.). Optionally, the communities may be initially populatedwith ideas related to a particular topic or set of topics. Optionally,each member may be provided with tools for establishing one or moreprofile page and/or one or more friend pages. Optionally, each membermay be provided with tools for posting and/or tracking ideas and/orcomments on ideas. Optionally, each member may be provided with toolsfor tracking and/or casting votes on ideas. Optionally, the users may beprovided with tools for adding widgets to posted ideas, profiles pages,and/or friends pages. Optionally, the users may post RSS feeds.

In accordance with embodiments, there are provided mechanisms andmethods for on-demand communities. These mechanisms and methods foron-demand communities can enable embodiments to provide greaterparticipation in providing feedback and/or developing new products. Theability of embodiments to provide on demand groups can enable greatercustomer loyalty.

In an embodiment and by way of example, a method for on-demandcommunities is provided. The method embodiment may include self-forminggroups, providing wigetization, providing RSS feeds, for example.

While the present invention is described with reference to an embodimentin which techniques for on-demand communities are implemented in asystem having an application server providing a front end for anon-demand database service capable of supporting multiple tenants, thepresent invention is not limited to multi-tenant databases nordeployment on application servers. Embodiments may be practiced usingother database architectures, i.e., ORACLE®, DB2® by IBM and the likewithout departing from the scope of the embodiments claimed.

Any of the above embodiments may be used alone or together with oneanother in any combination. Inventions encompassed within thisspecification may also include embodiments that are only partiallymentioned or alluded to or are not mentioned or alluded to at all inthis brief summary or in the abstract. Although various embodiments ofthe invention may have been motivated by various deficiencies with theprior art, which may be discussed or alluded to in one or more places inthe specification, the embodiments of the invention do not necessarilyaddress any of these deficiencies. In other words, different embodimentsof the invention may address different deficiencies that may bediscussed in the specification. Some embodiments may only partiallyaddress some deficiencies or just one deficiency that may be discussedin the specification, and some embodiments may not address any of thesedeficiencies.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an environment wherein an on-demand database servicemight be used;

FIG. 2 illustrates elements of FIG. 1 and various possibleinterconnections between these elements in an embodiment;

FIG. 3 shows a block diagram of an embodiment of a system for providinga self-grouping of communities;

FIG. 4 shows a block diagram of an embodiment of user tools;

FIG. 5 shows a bock diagram of an embodiment of administrative tools;

FIG. 6 shows a block diagram of an embodiment of profile;

FIG. 7 is a screenshot of an embodiment of a user dashboard;

FIG. 8A shows an example of an idea having a widget;

FIG. 8B shows an example of another embodiment of a posting of an idea;

FIG. 8C shows an example of screenshot of a portion of a webpage havinga widget;

FIG. 8D shows an example of screenshot of a portion of a webpage 830 forcreating a widget. Portion of webpage 830 includes description 832 andcode snippet 834;

FIG. 9 is a screenshot of an example of a contacts page;

FIG. 10 shows a screenshot of an example of a community page showing ametrics view;

FIG. 11 shows a screenshot of an example of a community page showing aURL view;

FIG. 12 shows a screenshot of an example of a community page, showing aURL view;

FIG. 13 shows a screenshot of an example of an ideas page;

FIG. 14 shows a screenshot of an example of an idea-details view;

FIG. 15 shows a screenshot of an example of a dashboard;

FIG. 16 is a flowchart of an embodiment of a server-side method ofcreating a community on-demand;

FIG. 17 is a flowchart of an embodiment of a client-side method ofcreating a community on demand;

FIG. 18 is a flowchart of an embodiment of a method 1800 for managing anon-demand community website;

FIG. 19 shows a flowchart of an example of a method of using environment10; and

FIG. 20 is a method of making the environment of FIG. 1.

DETAILED DESCRIPTION General Overview

Systems and methods are provided for on-demand communities.

As used herein, the term multi-tenant database system refers to thosesystems in which various elements of hardware and software of thedatabase system may be shared by one or more customers. For example, agiven application server may simultaneously process requests for a greatnumber of customers, and a given database table may store rows for apotentially much greater number of customers. As used herein, the termquery plan refers to a set of steps used to access information in adatabase system.

Next, mechanisms and methods for providing method and system for anon-demand community is provided. In this specification a community is agroup of users that share a common interest and tend to communicate withone another about that common interest. A community website is a websitein which users share ideas that re related to the community. Anon-demand community is a community website that is created by the tenantusing pre-established tools specialized for creating communities. In anembodiment, the focus of the communities may be on on-demand enterprisecommunities, which are communities structured around a business'ecosystem: partners, customers, vendors, employees, etc.).

In an embodiment, there may be several types of webpages associated witha community website. A self-forming group is a group that forms on itsown. The combination of the community website and the self-forminggroups creates a unique environment for sharing ideas about a topic,which has greater user participation than a community withoutself-forming groups, and therefore tends to generate more ideas and/orbetter ideas about the topic. The self-forming groups increase thelikelihood that the users of a particular self forming groups will beaware of the discussion and developments associated with the concerns ofthat self-forming group. Consequently, the self-forming groups increasethe likelihood that the users interested in a topic will be aware of thediscussion associated with that topic.

The community may include various features and/or tools that encourageand/or enable the self-forming of groups, thereby causing the value ofthe website to increase exponentially with the increase in the number ofmembers that belong to the self-forming groups. Additionally, somecontent may be placed initially on the website at the launch of thewebsite, which gives an initial significant value to the website that islinear proportional to the number of users that are able to the view thecontent and that are expected to be interested in the content. Enablinguser interaction with one another, via the posting of new ideas, thecommenting on ideas, and/or participating in discussions causes thevalue of the website to increase according the square of the number ofusers that are likely to access the site, which ensures a larger growthrate in the value of the website than were the users not able to easilyinteract with one another.

In an embodiment, the user and/or administrator are provided with toolsthat encourage self-forming groups. For example, the website may includewidgetization, self-forming groups, profile pages, and/or lists of orpages of friends. A widget is a control element of a Graphical UserInterface (GUI) that displays an information arrangement changeable bythe user, such as a window or a text box, which will be discussedfurther, below. Profile pages are and example of an element of thecommunity website that may encourage self forming groups by encouragingusers to view one another's profiles and send comments to one anotherrelated to information in the profiles, such as by sending e-mails or byposting comments on one another's profile webpages. Thus, thecombination of the profile webpages with the community website cooperatewith one another to further increase the amount of discussion, ideas,and comments related to the topic that the community website is based.

The user may also be able to establish friend pages in addition to orinstead of profile pages. Friend pages describe friends of a particularuser. The friend pages may be created by a first user to establish oneor more other users (e.g., a second user) as friend of that first user.A user may establish multiple friend pages, each having informationabout one or more friends. In an embodiment, the friend pages are onlyviewable by the user that created them. In another embodiment, thefriend pages are viewable by an administrator and/or by those that theuser gave permission to view the friend pages. In another embodiment,the friend pages are public and available for anyone to view.

The profile pages and friend pages may include information that a usermay want to display about themselves and/or information that the usermay want to store about other members of the community website. Forexample, the profile and friends pages may include links for the user tostore their ideas, the items they voted on, the discussions theyparticipated in, their watchlist, their profile, their friends, and/ortheir communities. In an alternative embodiment, the user may choosewhether to allow others to view their ideas, the items they voted on,the discussions they participated in, their watchlist, their profile,their friends, and/or their communities.

A characteristic of a widget may be to provide a single interactionpoint for the direct manipulation of a given kind of data. Widgets maybe basic visual building blocks which combined in an application holdall the data processed by the application and the available interactionson this data. Widgetization is the process of creating a widget.

Widgetization allows the users and/or administrators to copy widgetsfrom a website of an organization providing the on-demand community forthe sponsoring organization to the website provided. The website mayinclude tools that enable and/or facilitate an administrator to placethe widget of an already prepared article about an idea, for example,within a posting of an idea, comment, within static text, and/or otherlocation of the website. For example, the administrator may be enabledto snip from the host's webpage articles, webpages, and/or portions ofarticles and/or webpages and include the snips within a posting on thewebsite of the sponsoring organization with which the administrator isassociated.

In an embodiment, administrative tools may include a page for viewingwebsites categorized according to their type (e.g., news or customerfeedback). In an embodiment, the Administrative tools may include a pagefor viewing the name, language, and/or URL of the community. In anembodiment, administrative tools may allow administrators to viewstatistics about the community websites. For example, the administratormay be able to view the number of pages in the website, the numbers ofusers on the website, the number of ideas posted on the website, thenumber of votes posted to the website, number of discussions on thewebsites, categories of discussion, categories of votes, and categoriesof ideas, and/or other statistics. There may be one or more pages forviewing and changing the settings of one or more community websites, apage for idea moderation, an idea details page, a contact page (e.g.,listing people to contact, such as the CEO).

There may be a variety of other features associated with the communitywebsite. For example, the on-demand community website may include ausers page, a contacts page, an ideas page, a comments page, a votepage, reports and dashboard page, and/or a search page. The user pagemay be used for storing information about the user.

In an embodiment, there may be a user page for the user and/or anotheruser page for an administrator. In an embodiment, the same user page maybe accessible by the user and/or the administrator. In an embodiment,the contacts page may be a page that lists the contact information ofvarious officers of the organization sponsoring the website, such as theCEO, and/or other people of interest the users. The idea page may be forposting and/or viewing ideas related to a service, product and/orinterest of the organization sponsoring the website. The comments pagemay include comments about the ideas and may allow users to postcomments. A vote page may allow a user and/or administrator to voteand/or track the votes of a particular idea and/or all ideas posted. Areports and dashboard page may be a page available to an administratorfor viewing various reports about the ideas and/or votes and/or foraccessing various administrative tools.

A search page may allow a user and/or administrator to searchinformation on the website, e.g., via keyword searching. Any of thepages of the website may have different versions that are available todifferent types of users, such as one version for an administrator, oneversion for a user, one version for a user that is an employee, oneversion for a user that is a customer, and/or one version for specialcustomers.

The website may provide tools for site administration, users, postingideas, voting and/or down voting an idea, commenting on an idea and/ortracking comments on an idea, searching, and/or for instilling themeswithin the website (e.g., Apex™ Pages that allow the tenant to customizethe webpage using the APEX programming language). The website mayinclude a “my pages” for user, which may be a page for users to storeand/or track information of interest to them. The website may include afeeds tab supporting Simple Syndication (RSS) feeds for example. Thewebsite may include forums or discussions on a variety of topics. Thewebsite may include moderation and/or report abuse tools that allow theuser to report abuse and/or allows the administrators to moderatediscussions, forums, comments and/or the posting of ideas by forexample, removing and/or editing content and/or postings. The moderationtools may also allow the administrator to restrict access and preventspamming. There may be a different level of access granted to gueststhan to registered users, paying users, and/or other types of users. Thewebsite may provide analytics by for example providing analytical toolsthat are available to administrators, officers of the sponsoringorganization, and/or users, depending on the nature of the themes of thecommunity website. There may be an experimental mode of voting for betatesting. There may be user alerts that the user may set to alert theuser when activity has occurred related to an item of interest, such asan idea of interest, a comment of interest, a discussion of interest,and/or a vote of interest. The related activity may include posting arelated idea, posting a comment, a change in a vote and/or anotheractivity. The community website may include Really Simple Syndication(RSS), which allows for a web feed that may be integrated within thecommunity website for automatically frequently updating material postedon the website. There may be status tags that are available for viewingby the sponsoring organization and/or the organization providing thewebsite to view the status of the website. The status of the website mayinclude delivered, in progress/under development, interest expressed(but no decision made as whether to sponsor the website), active,inactive, and/or other status. The website may include free text HTML.The websites may be used by companies of all sizes to createcommunities. Next, mechanisms and methods for providing FOR ON-DEMANDCOMMUNITIES will be described with reference to example embodiments.

System Overview

FIG. 1 illustrates an environment wherein an on-demand database servicemight be used. As illustrated in FIG. 1 (and in more detail in FIG. 2)user systems 12 might interact via a network 14 with an on-demanddatabase service 16. Some on-demand database services may storeinformation from one or more tenants stored into tables of a commondatabase image to form a multi-tenant database system (MTS).Accordingly, on-demand database service 16 and System 16 will be usedinterchangeably herein. A database image may include one or moredatabase objects. A relational database management system (RDMS) or theequivalent may execute storage and retrieval of information against thedatabase object(s). Some on-demand database services may include anapplication platform 18 that enables creation, managing and executingone or more applications developed by the provider of the on-demanddatabase service, users accessing the on-demand database service viauser systems 12, or third party application developers accessing theon-demand database service via user systems 12.

The users of those user systems 12 might be users in differingcapacities, and the capacity of a particular user system 12 might beentirely determined by permissions (permission levels) for the currentuser. For example, where a salesperson is using a particular user system12 to interact with System 16, that user system has the capacitiesallotted to that salesperson. However, while an administrator is usingthat user system to interact with System 16, that user system has thecapacities allotted to that administrator. In systems with anhierarchical role model, users at one permission level may have accessto applications, data, and database information accessible by a lowerpermission level user, but may not have access to certain applications,database information, and data accessible by a user at a higherpermission level. Thus, different users will have different capabilitieswith regard to accessing and modifying application and databaseinformation, depending on a user's security or permission level.

Network 14 can be a LAN (local area network), WAN (wide area network),wireless network, point-to-point network, star network, token ringnetwork, hub network, or other appropriate configuration. As the mostcommon type of network in current use is a TCP/IP (Transfer ControlProtocol and Internet Protocol) network such as the global internetworkof networks often referred to as the “Internet” with a capital “I,” thatwill be used in many of the examples herein. However, it should beunderstood that the networks that the present invention might use arenot so limited, although TCP/IP is a frequently implemented protocol.

User systems 12 might communicate with System 16 using TCP/IP and, at ahigher network level, use other common Internet protocols tocommunicate, such as HTTP, FTP, AFS, WAP, etc. In an example where HTTPis used, user system 12 might include an HTTP client commonly referredto as a “browser” for sending and receiving HTTP messages to and from anHTTP server at System 16. Such HTTP server might be implemented as thesole network interface between System 16 and network 14, but othertechniques might be used as well or instead. In some implementations,the interface between System 16 and network 14 includes load sharingfunctionality, such as round-robin HTTP request distributors to balanceloads and distribute incoming HTTP requests evenly over a plurality ofservers. At least as for the users that are accessing that server, eachof the plurality of servers has access to the MTS' data; however, otheralternative configurations are contemplated.

In one aspect, the system shown in FIG. 1 implements a web-basedcustomer relationship management (CRM) system. For example, in oneaspect, System 16 includes application servers configured to implementand execute CRM software applications as well as provide related data,code, forms, Web pages and other information to and from user systems 12and to store to, and retrieve from, a database system related data,objects and Web page content. With a multi-tenant system, data formultiple tenants may be stored in the same physical database object,however, tenant data typically is arranged so that data of one tenant iskept logically separate from that of other tenants so that one tenantdoes not have access to another tenant's data, unless such data isexpressly shared. In certain aspects, system 16 implements applicationsother than, or in addition to, a CRM application. For example, system 16may provide tenant access to multiple hosted (standard and custom)applications, including a CRM application. User (or third partydeveloper) applications, which may or may not include CRM, may besupported by the application platform 18, which manages creation,storage of the applications into one or more database objects andexecuting of the applications in a virtual machine in the process spaceof the system 16.

One arrangement for elements of System 16 is shown in FIG. 1, includinga network interface 20, application platform 18, storage 22 for tenantdata, storage 24 for system data accessible to System 16 and possiblymultiple tenants, program code 26 for implementing various functions ofSystem 16, and a process space 28 for executing MTS system processes andtenant-specific processes, such as running applications as part of anapplication hosting service. Additional processes that may execute onSystem 16 include database indexing processes.

Several elements in the system shown in FIG. 1 include conventional,well-known elements that are explained only briefly here. For example,each user system 12 could include a desktop personal computer,workstation, laptop, PDA, cell phone, or any wireless access protocol(WAP) enabled device or any other computing device capable ofinterfacing directly or indirectly to the Internet or other networkconnection. User system 12 typically runs an HTTP client, e.g., abrowsing program, such as Microsoft's Internet Explorer browser,Netscape's Navigator browser, Opera's browser, or a WAP-enabled browserin the case of a cell phone, PDA or other wireless device, or the like,allowing a user (e.g., subscriber of the multi-tenant database system)of user system 12 to access, process and view information, pages andapplications available to it from system 16 over network 14. Each usersystem 12 also typically includes one or more user interface devices,such as a keyboard, a mouse, touch screen, pen or the like, forinteracting with a graphical user interface (GUI) provided by thebrowser on a display (e.g., monitor screen, LCD display, etc.) inconjunction with pages, forms, applications and other informationprovided by System 16 or other systems or servers. For example, the userinterface device can be used to access data and applications hosted bySystem 16, and to perform searches on stored data, and otherwise allow auser to interact with various GUI pages that may be presented to a user.As discussed above, embodiments are suitable for use with the Internet,which refers to a specific global internetwork of networks. However, itshould be understood that other networks can be used instead of theInternet, such as an intranet, an extranet, a virtual private network(VPN), a non-TCP/IP based network, any LAN or WAN or the like.

According to one embodiment, each user system 12 and all of itscomponents are operator configurable using applications, such as abrowser, including computer code run using a central processing unitsuch as an Intel Pentium® processor or the like. Similarly, System 16(and additional instances of an MTS, where more than one is present) andall of their components might be operator configurable usingapplication(s) including computer code run using a central processingunit such as an Intel Pentium® processor or the like, or multipleprocessor units. A computer program product aspect includes amachine-readable storage medium (media) having instructions storedthereon/in which can be used to program a computer to perform any of theprocesses of the embodiments described herein. Computer code foroperating and configuring System 16 to intercommunicate and to processweb pages, applications and other data and media content as describedherein is preferably downloaded and stored on a hard disk, but theentire program code, or portions thereof, may also be stored in anyother volatile or non-volatile memory medium or device as is well known,such as a ROM or RAM, or provided on any media capable of storingprogram code, such as any type of rotating media including floppy disks,optical discs, digital versatile disk (DVD), compact disk (CD),microdrive, and magneto-optical disks, and magnetic or optical cards,nanosystems (including molecular memory ICs), or any type of media ordevice suitable for storing instructions and/or data. Additionally, theentire program code, or portions thereof, may be transmitted anddownloaded from a software source over a transmission medium, e.g., overthe Internet, or from another server, as is well known, or transmittedover any other conventional network connection as is well known (e.g.,extranet, VPN, LAN, etc.) using any communication medium and protocols(e.g., TCP/IP, HTTP, HTTPS, Ethernet, etc.) as are well known. In thisspecification the terms machine readable medium and computer readablemedium do not include transmission medium. It will also be appreciatedthat computer code for implementing aspects of the present invention canbe implemented in any programming language that can be executed on aclient system and/or server or server system such as, for example, in C,C++, HTML, any other markup language, Java™, JavaScript, ActiveX, anyother scripting language such as VBScript, and many other programminglanguages as are well known. (Java™ is a trademark of Sun Microsystems,Inc.).

According to one embodiment, each System 16 is configured to provide webpages, forms, applications, data and media content to user (client)systems 12 to support the access by user systems 12 as tenants of System16. As such, System 16 provides security mechanisms to keep eachtenant's data separate unless the data is shared. If more than one MTSis used, they may be located in close proximity to one another (e.g., ina server farm located in a single building or campus), or they may bedistributed at locations remote from one another (e.g., one or moreservers located in city A and one or more servers located in city B). Asused herein, each MTS could include one or more logically and/orphysically connected servers distributed locally or across one or moregeographic locations. Additionally, the term “server” is meant toinclude a computer system, including processing hardware and processspace(s), and an associated storage system and database application(e.g., OODBMS or RDBMS) as is well known in the art. It should also beunderstood that “server system” and “server” are often usedinterchangeably herein. Similarly, the database object described hereincan be implemented as single databases, a distributed database, acollection of distributed databases, a database with redundant online oroffline backups or other redundancies, etc., and might include adistributed database or storage network and associated processingintelligence.

FIG. 2 illustrates elements of System 16 and various interconnections inan embodiment. As shown by FIG. 2, example System 16 includes a networkinterface 20 (of FIG. 1) implemented as a set of HTTP applicationservers 100, an application platform 18 and database objects 22, 24.Also shown is system process space 102, including individual tenantprocess spaces 104 and a tenant management process space 110. Eachapplication server 100 may be configured to access storage 22 and thetenant data 23 therein, and access storage 24 and the system data 25therein to serve requests of user systems 12. The tenant data 23 mightbe divided into individual tenant storage areas 112, which can be eithera physical arrangement or a logical arrangement of data. Within eachtenant storage area 112, user storage 114 and application storage 116might be similarly allocated for each user. For example, a copy of auser's most recently used (MRU) items might be stored to user storagearea 114. Similarly, a copy of MRU items for an entire organization thatis a tenant might be stored to tenant storage area 112. A user interfaceUI 30 provides a user interface and an API 32 provides an applicationprogrammer interface to System 16 resident processes to users and/ordevelopers at user systems 12. The tenant data and the system data maybe stored in various databases, such as one or more Oracle™ databases.

Application platform 18 includes an application setup mechanism 38 thatsupports application developers' creation and management ofapplications, which may be saved as metadata into tenant database 22 bysave routines 36 for execution by subscribers as one or more tenantprocesses 104 managed by tenant management process 110 for example.Invocations to such applications may be coded using PL/SOQL 34 thatprovides a programming language style interface extension to API 32. Fora detailed description of PL/SOQL language embodiments reference may behad to commonly owned co-pending U.S. Provisional Patent Application60/828,192 entitled, PROGRAMMING LANGUAGE METHOD AND SYSTEM FOREXTENDING APIS TO EXECUTE IN CONJUNCTION WITH DATABASE APIS, by CraigWeissman, filed Oct. 4, 2006, which is incorporated in its entiretyherein for all purposes. Invocations to applications may be detected byone or more system processes, which manages retrieving applicationmetadata 116 for the subscriber making the invocation and executing themetadata as an application in a virtual machine.

Each application server 100 may be communicably coupled to databasesystems, e.g., system data 25 and tenant data 23, via a differentnetwork connection. For example, one server 100 ₁ might be coupled viathe Internet 14, another server 100 _(N-1) might be coupled via a directnetwork link, and another server 100 _(N) might be coupled by yet adifferent network connection. Transfer Control Protocol and InternetProtocol (TCP/IP) are typical protocols for communicating betweenservers 100 and the database system; however, it will be apparent to oneskilled in the art that other transport protocols may be used tooptimize the system depending on the network interconnect used.

In certain aspects, each application server 100 is configured to handlerequests for any user associated with any organization that is a tenant.Because it is desirable to be able to add and remove application serversfrom the server pool at any time for any reason, there is preferably noserver affinity for a user and/or organization to a specific applicationserver 100. In one embodiment, therefore, an interface systemimplementing a load balancing function (e.g., an F5 Big-IP loadbalancer) is communicably coupled between the servers 100 and the usersystems 12 to distribute requests to the servers 100. In one aspect, theload balancer uses a least connections algorithm to route user requeststo the servers 100. Other examples of load balancing algorithms, such asround robin and observed response time, also can be used. For example,in certain aspects, three consecutive requests from the same user couldhit three different servers 100, and three requests from different userscould hit the same server 100. In this manner, System 16 ismulti-tenant, wherein System 16 handles storage of, and access to,different objects, data and applications across disparate users andorganizations.

As an example of storage, one tenant might be a company that employs asales force where each salesperson uses System 16 to manage their salesprocess. Thus, a user might maintain contact data, leads data, customerfollow-up data, performance data, goals and progress data, etc., allapplicable to that user's personal sales process (e.g., in tenantdatabase 22). In an example MTS arrangement, since all of this data andthe applications to access, view, modify, report, transmit, calculate,etc., can be maintained and accessed by a user system having nothingmore than network access, the user can manage his or her sales effortsand cycles from any of many different user systems. For example, if asalesperson is visiting a customer and the customer has Internet accessin their lobby, the salesperson can obtain critical updates as to thatcustomer while waiting for the customer to arrive in the lobby.

While each user's data might be separate from other users' dataregardless of the employers of each user, some data might beorganization-wide data shared or accessible by a plurality of users orall of the users for a given organization that is a tenant. Thus, theremight be some data structures managed by System 16 that are allocated atthe tenant level while other data structures might be managed at theuser level. Because an MTS might support multiple tenants includingpossible competitors, the MTS should have security protocols that keepdata, applications, and application use separate. Also, because manytenants will opt for access to an MTS rather than maintain their ownsystem, redundancy, up-time, and backup are additional criticalfunctions and need to be implemented in the MTS. In addition touser-specific data and tenant-specific data, System 16 might alsomaintain system level data usable by multiple tenants or other data.Such system level data might include industry reports, news, postings,and the like that are sharable among tenants.

In certain aspects, client systems 12 communicate with applicationservers 100 to request and update system-level and tenant-level datafrom System 16 that may require one or more queries to database system22 and/or database system 24. System 16 (e.g., an application server 100in System 16) automatically generates one or more SQL statements (theSQL query) designed to access the desired information. Database system24 may generate query plans to access the requested data from thedatabase.

Each database can generally be viewed as a collection of objects, suchas a set of logical tables, containing data fitted into predefinedcategories. A “table” is one representation of a data object, and isused herein to simplify the conceptual description of objects and customobjects according to the present invention. It should be understood that“table” and “object” may be used interchangeably herein. Each tablegenerally contains one or more data categories logically arranged ascolumns or fields in a viewable schema. Each row or record of a tablecontains an instance of data for each category defined by the fields.For example, a CRM database may include a table that describes acustomer with fields for basic contact information such as name,address, phone number, fax number, etc. Another table might describe apurchase order, including fields for information such as customer,product, sale price, date, etc. In some multi-tenant database systems,standard entity tables might be provided for use by all tenants. For CRMdatabase applications, such standard entities might include tables forAccount, Contact, Lead and Opportunity data, each containing pre-definedfields. It should be understood that “entity” may also be usedinterchangeably herein with “object” and “table”.

In some multi-tenant database systems, tenants may be allowed to createand store custom objects, or they may be allowed to customize standardentities or objects, for example by creating custom fields for standardobjects, including custom index fields. U.S. patent application Ser. No.10/817,161, filed Apr. 2, 2004, entitled “Custom Entities and Fields ina Multi-Tenant Database System”, and which is hereby incorporated hereinby reference, teaches systems and methods for creating custom objects aswell as customizing standard objects in a multi-tenant database system.In certain aspects, for example, all custom entity data rows are storedin a single multi-tenant physical table, which may contain multiplelogical tables per organization. It is transparent to customers thattheir multiple “tables” are in fact stored in one large table or thattheir data may be stored in the same table as the data of othercustomers.

FIG. 3 shows a block diagram of an embodiment of a system for providingcommunities on demand, which will be referred to as on-demand system300. On-demand system 300 may include tenant community service 302,which may include tenant's administrative tools 304 and on-demandcommunities 306. On-demand communities 306 may include community pages308, tenant's user tools 310, user pages 312, and other user pages 314.In other embodiments, on-demand system 300 may not have all of theelements listed and/or may have other elements instead of or in additionto those listed.

On-demand system 300 is for creating a system on demand. On-demandsystem 300 may be one of tenant 1 process through tenant N process 104(FIG. 2). The on-demand communities, may include tools for creating, andmay be used by tenants to create on-demand communities. Tenant communityservices 302 include services that are available to administratorsand/or users of the on demand communities, which may include servicesthat facilitate the self-grouping of a community, services for creatingself grouping communities on demand, services for managing communities,and/or other services. Tenant community services 302 may includeservices available to the members of a particular tenant (e.g.,employees, customers, and administrators of the tenant). Administrativetools 304 are the tools available to the administrator of a tenant thatare associated with self-grouping communities. Administrative tools 304may be used for creating and/or maintaining on-demand communities.On-demand communities 306 may include self-grouping communities that arecreated with and/or managed by administrative tools 304. On-demandcommunities 306 are self grouping communities that were usingadministrative tools 304. On demand communities 306 may be referred toas self forming communities, because in an embodiment on demandcommunities 306 facilitates self-forming groups. However, anytime a selfforming group is mentioned an embodiment without self forming groups canbe substituted and any place on-demand communities 306 is mentioned, aself forming community may be substituted. Community pages 308 mayinclude pages that are available to community members for viewing.Tenant user tools 310 may include tools available to a user that is amember of a tenant. Tenant user tools 310 may include tools for creatinga widget and/or for adding a widget to a webpage. Tenant user tools 310may include tools for creating a an RSS feed and/or for adding a RSSfeed to a webpage. User pages 312 may include pages created by a userand/or for a user. User pages 312 may include, among other things,widgets and/or RSS feeds. Other tenant pages 314 may include other pagesthat may be include in a tenant website.

FIG. 4 shows a block diagram of an embodiment of user tools 400. Usertools 400 may include create profile pages 412, which may includewidgetization 414 and add RSS feed 416. User tools 400 may also includeadd lists 418. In other embodiments, user tools 400 may not have all ofthe elements listed and/or may have other elements instead of or inaddition to those listed.

User tools 400 may be an embodiment of tenant's user tool 310. Createprofile pages 412 may be used for creating pages that include a profileof the user. Widgetization 414 may be used for creating widgets and/oradding widgets to webpages. Widgetization 414 cooperates with thecommunity website to encourage users to revisit the site for updates,and encourages the forming of groups. Add RSS feed 416 may be used forcreating and/or adding an RSS feed to webpages. Add RSS feeds 416 mayalso cooperate with the community website to encourage users to revisitthe site for updates, and encourages the forming of groups. Add list 418may be used for adding lists to a webpage, such as a friends list and/orlists of other pages.

FIG. 5 shows a bock diagram of an embodiment of administrative tools500. Administrative tools 500 may include view websites 502, andcommunity details 504, which may include statistics 506, name 508,language 510, and URL 512. Administrative tools 500 may include news514, customer feedback 516, user moderation tools 518, and otheradministrative tools 520. In other embodiments, administrative tools 500may not have all of the elements listed and/or may have other elementsinstead of or in addition to those listed.

Administrative tools 500 may be an embodiment of administrative tools304. View websites 502 allows an administrator to view websites, whichmay have been created by the administrator. Community details 504 mayinclude information about details of each community. Statistics 506 mayinclude statistics about a community, such has how many members belongto the community. Statistics 506 may include information about groupswithin a community. Names 508 may include names of people that aremember of the community. Language 510 includes the selection of languagefor the community. URL 512 may include the URL of the community. News514 may include news about the community. Customer feedback 516 mayinclude feedback form customers. User moderation tools 518 may includetools for moderating disputes between users of the community. Otheradministrative tools 520 may include other administrative tools.

FIG. 6 shows a block diagram of an embodiment of profile 600. Profile600 may include list of friends 602, list of communities 604, ideas 606,votes 608, watchlists 610, and discussions 612, send message link 614,and add comment 616. In other embodiments, profile 600 may not have allof the elements listed and/or may have other elements instead of or inaddition to those listed.

Profile 600 may include information about the user that created theprofile and/or information that interests the user. In an embodiment,any user may add information to profile 600. In another embodiment, onlythe user to which the profile 600 is dedicated may add information toprofile 600. Profile 600 cooperates with the community website toencourage users to revisit the user's site within the community forupdates, and encourages the forming of groups. List of friends 602 mayinclude lists of friends of the user. List of communities 604 mayinclude lists of communities to which that user belongs to and/or thatthe user is allowed to join. Ideas 606 may include ideas of the user.Votes 608 may include votes that were cast by the user. Watchlists 610may include lists of, and/or links to, ideas about which the user wouldlike to receive updates. Discussion 612 may include discussions in whichthe user currently participates. Discussion 612 and/or other parts ofprofile 600 may contain links and/or fields for other users to postand/or send messages to the user associated with profile 600. Inparticular, the combination of widgets, optionally RSS feeds, andprofiles creates a synergy in the communal aspects of the communitywebsite, which encourages self forming groups. Send message link 614 maybe link on a web page of profile 600 via which a user may send a messageto the owner of profile 600. Add comment 616 is a portion of a webpage(e.g., a field) of profile 600 or a link that opens a page via in whicha user may add a comment (e.g., a message to the profile owner) to awebpage of profile 616, that any viewer of the profile 600 may see. Sendmessage link 614 and add comment 616 may be tools for promotingdiscussion that are part of discussion 612 or may be separate fromdiscussion 612.

FIG. 7 is a screenshot of an embodiment of a user dashboard 700. Userdashboard 700 may include dashboard tab 702, ideas submitted tab 704,ideas voted on tab 706, comments tab 708, watchlists tab 710, popularideas tab 712, recent ideas tab 714, comments tab 716, latest communityactivities 718 having type of activity 718 and description of activity720, general stats 722, and recent ideas 724. In other embodiments,dashboard 700 may not have all of the elements listed and/or may haveother elements instead of or in addition to those listed.

Dashboard 700 contains links for the user to access for managing,maintaining, and/or creating the user's webpages. Dashboard 700 includesinformation summarizing the status of the user's activities. Dashboardtab 702, when selected (e.g., by clicking once or twice with a mouse, orother input device or by selecting hitting the return key), causesdashboard page 700 to appear. In the screenshot of FIG. 7 dashboard tab702 is currently selected (which is why dashboard page 700 is displayedin the screenshot of FIG. 7).

Ideas submitted tab 704 causes a webpage to appear that lists ideas thatthe user submitted, which may also include information about where theidea was submitted and information about the ideas, such as the numberof votes the idea received and/or comments about the idea.

Ideas voted on tab 706 causes a webpage to appear that lists ideas thatthe user voted on, which may also include information about where theidea that voted on is found, such as the number of votes received by,and/or the comments entered about, the idea that the user voted on.received and/or comments about the idea.

Comments tab 708, when selected, in an embodiment, causes a webpage toappear that lists ideas that the user commented on, which may alsoinclude the comment made, information about where the idea that the usercommented on may be found, such as in which community the idea can befound, the number of votes cast for and/or against the idea commentedupon, and/or other comments entered about the idea that the usercommented on. In an embodiment, comments tab 708, when selected, causesa webpage to be displayed that lists comments received on profile 600(e.g., the comments may have been added to profile 600 via add comment616).

Watchlists tab 710 causes a webpage to appear that lists watchlists thatthe user has set. The user may set a watch on an idea commented on, anidea voted on, an idea submitted, a profile of another user, and/orideas posted by another user, for example. Each item for which a watchis set may appear in a watchlist and update to the item may beautomatically posted. The updates may include any of a number ofactivities that occurred recently, such as a change in a vote, and newcomment about an idea, and/or a new idea that has been posted relatingto the item in the watchlist. For example, if another user is listed inthe watchlist, the watch may be set to send an indication that the userbeing watch performed a new activity and the information about theactivity. If the activity is the posting of an idea, an indication thata new idea was posted and a link to the idea may be sent watchlist.

Popular ideas tab 712 may include a link to a webpage that list the mostpopular ideas that have been posted and/or that the user has posted sofar. Recent ideas tab 714 may include a link to a webpage that lists themost recently posted ideas and/or the ideas of the user that were postedmost recently. Comments tab 716 may perform a similar or differentfunction as comment tab 708, and, when selected, may cause a page to bedisplayed that has links to comments that the user posted and/orcomments about ideas that the user posted, links to comments about ideasthat the user voted upon, and/or links to comments about ideas that theuser commented upon, for example.

Latest community activities 717 may include (or may be) a list of thelatest activities that occurred at one or more communities. Activitytype 718 lists the types of activities of the activities a that recentlyoccurred. Activity types may include the posting of a new comment (whichmay be referred to as “new comment”), a change in a vote (which may bereferred to as “vote”), the posting of an idea, and/or updating aprofile, for example. Description of activity 720 lists a description ofthe activities included in list community activities 718. In anembodiment, each description of description of activity 720 may includea name of the user and a name of an idea in which the activity wasconducted. For example, the description of a vote may be “Ferrux votedon Idea exchange,” where “Ferrux” is the name of the user that cast thevote and “Idea Exchange” may be a name of the idea that was voted on.Another example of a description may be “JG on Test Drive and PrepRelease before roll out,” where JG may be the name of the user thatposted the new comment and “Test Drive and Prep Release before Roll Out”may be a title of the idea that was commented upon.

General stats 722 may be a field (e.g., a box) in which statisticsrelated to a particular community may be listed. For example, generalstats 722 may include information about a a particular community. Forexample, general stats 722 may include the number of votes received,comment posted, ideas posted during a particular period of time, and/orthe number of votes cast for and/or against the ideas that the user hasposted.

Recent ideas 724 may include a field that list ideas that were recentlyposted. Optionally, recent ideas 724 may include a smaller portion ofthe information about recently posted ideas that are displayed uponselecting recent ideas tab 714.

FIGS. 8A-D describe information relevant to widgets and RSS feeds.

FIG. 8A shows an example of an idea 800 having widget 802. Widget 802may have been place by a user into idea 800. In other embodiments, idea800 may not have all of the elements listed and/or may have otherelements instead of or in addition to those listed.

FIG. 8B shows an example of another embodiment of a posting of an idea810 having vote 812, comment field 814, posted-by field 816, related-tofield 818, and date field 819. In other embodiments, idea 810 may nothave all of the elements listed and/or may have other elements insteadof or in addition to those listed.

Idea 810 may be an idea posted by a user, such as an end user or anadministrator. Vote 812 is link that initiates casting a vote and alsogives a count of the total number of votes cast for or against the idea.Comment field 814 lists the number of comments that have been postedabout the idea. In an embodiment, comment field 814 may also be a linkto a page for viewing the comments and/or posting another comment.Posted-by field 816 is a field that lists the user that posted the idea.Related-to field 818 is a field that lists a project, discussion topic,company, division of a company, and/or campaign to which the idea isrelated. Date field 819 lists the date that the idea was posted.

FIG. 8C shows an example of screenshot of a portion of a webpage 820having a widget. Portion of webpage 820 includes URL field 822, codesnippet field 824, and widget 826. In other embodiments, portion ofwebpage 820 may not have all of the elements listed and/or may haveother elements instead of or in addition to those listed.

Portion of webpage 820 is a portion of a webpage in which a snippet ofcode is embedded. URL field 822 is a field on a webpage into which a URLof a snippet of code is located. Code snippet field 824 is a field on awebpage into which a snippet of code may be inserted. Code snippet field824 contains code that creates a widget. As a result of pasting the codesnippet into code snippet field 824, a widget appears. Widget 826 is thewidget created by code snippet 824. By being able to paste a codesnippet into a portion of the webpage, where the code snippet hasalready been proven to function properly, the coding for an end user issimplified to just copying and pasting the code snippet. The widgets maycontain content that changes with time and/or responds to a viewer'sactivities. The user may be given access to widgets that receive votes,widgets that cause recent ideas to be displayed, widgets that displaycomments, and widgets that cause popular ideas to be displayed. Widgetsmay be used to snip entire ideas and cause the idea to be displayed in alocation at which the widget is pasted. Widgets may be added totemplates for publishing material, such as templates for webpages.

FIG. 8D shows an example of screenshot of a portion of a webpage 830 forcreating a widget. Portion of webpage 830 includes description 832 andcode snippet 834. In other embodiments, portion of webpage 830 may nothave all of the elements listed and/or may have other elements insteadof or in addition to those listed.

Portion of webpage 830 is a portion of a webpage that a user may accessfor creating a widget. Description 832 describes the widget that may becreated with the connects of portion of webpage 830. Description 832describes the widget or type of widget that is created. Code snippet 834is a portion of code that may be copied and pasted into a webpage tocreate the widget described. Code snippet 834 may be copied and pastedinto the code of another webpage to create the widget. Code snippet 834is the actual code for creating the widget.

FIG. 9 is a screenshot of an example of a contacts page 900. Contactspage 900 may include home tab 902, accounts tab 904, contacts tab 906,communities tab 908, ideas tab 908, reports tab 912, dashboard tab 914,search field 916, task menu 918, and contact details 920, which mayinclude contact owner 922, contact name 923, account 924, title 926,reports-to 928, edit 932, delete 934, clone 936, request update 938,enable self-service 940, contact information 944, links 942, contactinformation 944, and recent items 946. Contacts page 900 may alsoinclude community profile 947, which may include alias 948, profession950, location 952, profile 954, myblog 956, my company 958, articles960, props 962, votes 962, votes 964, and comments 966. Contacts page900 may also include additional information 967, which may include webactivities 968, which may include actions 970 and web activities 981,article 974, edit 976, delete 978, clone 980, request update 982, enableself-service 984, new 986, created date 988, and community 990. Contactspage 900 may also include activity history 991, which may include localcall 992, mail merge 994, send an e-mail 996, request update 998, viewall 902.1, action 904.1, subject 906.1, related-to 908.1, due date910.1, assigned-to 912.1, and last modified tab 914.1. Contacts page 900may also include open activities 915.1, which may include new task 916.1and new event 918.1. In other embodiments, contacts page 900 may nothave all of the elements listed and/or may have other elements insteadof or in addition to those listed.

Contacts page 900 may include links that facilitate keeping track ofcontacts. Home tab 902 may include a link, which when selected, brings auser to the home page of the on-demand community. Accounts tab 904brings the user to a page that includes account information, which mayinclude information about the company that is tenant of the multi-tenantdatabase. If the user is an administrator, the account information mayinclude information about all users and/or about the tenant with whichthe community website is associated. Contacts tab 906 may include alink, which when selected, brings a user to a page that includesinformation related to the user's contacts. The contacts may be thoseusers that the owner of contact page 900 (e.g., an administrator orother employees of the tenant) communicates with at a particularcompany. A group of users that list one another as contacts may be saidto form a self-formed group. In FIG. 9 contacts tab 906 is alreadyselected and consequently contact page 900 is presented. Communities tab908 may include a link, which when selected, brings a user to a pagethat contains information about on-demand communities to which that theuser is authorized to view, which may be different depending on theuser's authorized level of access, which in turn may depend on whetherthe user is an administrator, other employee of the tenant, customer ofthe tenant, or another end user. Ideas tab 908 may include a link, whichwhen selected, brings a user to a page that contains information aboutthe ideas posted on webpages of the on-demand community. For example,the information about the ideas may include a complete listing of ideasposted. The ideas may be grouped into categories, and the informationabout the ideas may include links that cause every idea in a particularcategory to be listed, the most recent ideas to be listed, the mostpopular ideas to be listed, comments about ideas to be listed, and/orvotes for and/or against a particular ideas to be displayed. Reports tab912 may include a link, which when selected, brings a user to a pagethat contains information about reports to be displayed, such as a listof available reports and/or links for generating reports. The reportsmay include statistics and/or other information about users, ideas,comments, votes, and/or the performance of the company of the tenanthosting the on-demand community. Dashboard tab 914 may include a link,which when selected, brings a user to a page that contains informationand/or links that relate to managing the community, if the user is anadministrator. Dashboard tab 914 may include a link, which whenselected, brings a user to a page that contains information and/or linksthat relate to managing the webpages of the end user, if the user is anend user. For example, if the user is an end user, the dashboard tab914, when selected may being the user to dashboard 700 (FIG. 7).

Search field 916 may be used for searching the on-demand community forkeywords, other users, comments, accounts, reports, and/or ideas. Taskmenu 918 may be a pull down menu for initiating one or more tasks thatthe user is authorized to do. Task menu 918 may include a task forcreating a new community and/or adding users to a community. Contactdetails 920 is a section of contact page 900 that includes details aboutone or more contacts. Contact owner 922 may be the name of the owner ofthe contact. For example, the owner of the contact may be the owner orCEO of the company that employs the contact. Contact name 923 may listthe name of a contact. Account 924 is the name of the account associatedwith the contact owner, which may be the company associated with (e.g.,that employs) the contact. Title 926 may be the title of the contact(e.g., CEO, vice president, staff engineer, or other title). Reports-to928 may list the person and/or entity to who the contact reports, suchas the boss, superior, or supervisor of the contact.

Edit 932 allows the user to edit the contact information. Delete 934allows the user to delete the contact. Clone 936 causes a duplicaterecord of the current contact to be created, which is useful forcreating a new contact that has similar contact information as thecurrent contact. For example, if new contact works for the same companyas a contact already entered, it may be efficient to clone the contactentered and then edit the information of the clone. Request update 938may send a request to the contact or to a sever associated with thecontact for an update to the information about the contact. Enableself-service 940 may allow the contact to edit the contact information.Links 942 may include links for viewing other information, such as alink for viewing web activities, history of activities, open activities,opportunities, cases, campaign history, and/or other links.Opportunities may be sales leads. Cases may track the process of aproject that is underway and include information such as deadlines,payments, and goods delivered. Web activities may allow the user to viewactivities occurring on a network, such as the number of people thatvisit a community. History of activities may allow the user to view ahistory of all of their activities (not just the web activities). In anembodiment, history of activities may allow the user to view a historyof all activities associated with the on-demand community. In oneembodiment, the user may only view all activities associated with thecommunity if the user is an administrator. In another embodiment others,possibly any community member may view all activities. Open activitiesmay include information about activities that are in progress. Cases mayinclude current clients and activities associated with the currentclients. Campaign history may include information about a campaign, suchas marketing goals and progress towards reaching those marketing goals.

Contact information 944 includes the information for contacting thecontact, such as an email address, telephone number, mobile phonenumber, instant messaging address, another contact address, and/or othercontact information. Recent items 946 may include a listing of itemsthat were recently accessed, such as a contact, information about thecompany hosting the multi tenant database.

Community profile 947 may be a portion of a webpage that includesinformation about an on-demand community created by the user andassociated with the contact. Alias 948 may include a name for thecommunity. Profession 950 may a profession associated with the on-demandcommunity. Location 952 may be a location of the members of thecommunity and/or of the host of the community. Profile 954 may include aprofile of the contact, such as a Linkedin profile. Myblog 956 may be ablog of the user that owns contacts page 900 and is associated with thecommunity. My company 958 may be a company associated with the on-demandcommunity. Articles 960 may be a list of ideas of members of thecommunity. Props 962 may include article, images, and/or applicationsthat the user uploads to the user's profile and/or other webpages. Votes964 may include the votes cast for and/or against each idea posted.Comments 966 may include comments about ideas posted by the users.Additional information 967 includes information about communities. Webactivities 968 may include a information about web activities that thecontact may has performed, such as posting an idea, voting and/orposting a comment about an idea. Actions 970 may include editing ordeleting a web activity. Web activities 972 may be a list of webactivities. Article 974 lists the article for to the vote, comment, oridea is related.

Edit 976 allows the user to edit the other information. Delete 978allows the user to delete a record (e.g., a line or a web activity) fromthe other information. Clone 980 causes a duplicate record of thecurrent activity to be created, which is useful for creating a new lineof other information that has similar information as the line of otherinformation. For example, if a newly performed web activity is similarto a previously performed web activity, it may be efficient to clone thepreviously performed web activity that is already recorded and then editthe information and/or web activity that was cloned, as the web activityis being performed, for example. Request update 982 may send a requestto the contact or to a sever associated with the contact for an updateto the information other information about the contact. Enableself-service 984 may allow the contact to edit the other information.New 986 allows the user to add or initiates the adding of another webactivity. Created date 988 is the date that the record of the webactivity was created. Community 990 is the community associated with thecorresponding line of web activity 972.

Activity history 991 may include a log of activities of the contact. Loga call 992 may record information about a previously unrecorded phonecall. Mail merge 994 may merge an article or other information with ane-mail. For example, mail merge 994 may be useful in uploading the textof an idea into the text of an e-mail. Send an e-mail 996 may initiatesending an email from the current user to the current contact. Requestupdate 998 may request updates from the contact for the contact'sactivity history. View all 902.1 may cause all activity of a contact orof all contact to be viewed. Action 904.1 are actions that the user mayperform on the items recorded in activity history 991, such as editingor deleting the item. Subject 906.1 is the subject of an activity, suchas the same of a task. Related-to 908.1 is the company to which the taskor other activity of subject 906.1 is related. Due date 910.1 is thedate at which it is desired to complete the task. Assigned-to 912.1 isthe person, group, or other entity to which the task was assigned. Lastmodified tab 914.1 is the last date at which the information about theactivity was modified. Open activities 915.1 are activities that arecurrently being created or activities for which the information iscurrently being modified. New task 916.1 opens a webpage that initiatesestablishing a new tasks and/or entering information about a previouslyunrecorded or otherwise new task. New event 918.1 initiates a new event(e.g., a users group meeting), a project, or the entry of informationabout a new project or event. Each project may contain many tasks.

FIG. 10 shows a screenshot of an example of a community page 1000,showing a metrics view. Community page 1000 includes home tab 902,accounts tab 904, contacts tab 906, communities tab 908, ideas tab 908,reports tab 912, dashboard tab 914, search field 916, task menu 918, andrecent items 946. Community page may also include community metrics view1001, view selection 1002, actions 1003, community name 1004, language1006, page views 1008, registered users 1010, ideas 1012, votes 1014,and comments 116. In other embodiments, community page 1000 may not haveall of the elements listed and/or may have other elements instead of orin addition to those listed.

Home tab 902, accounts tab 904, contacts tab 906, communities tab 908,ideas tab 908, reports tab 912, dashboard tab 914, search field 916,task menu 918, and recent items 946 were described in conjunction withFIG. 9, above.

Metrics view 1001 is one or more webpages that display metrics about thecommunity. A metric of the community is a measure of the size, userinterest, and/or amount of activity associated with the community. Viewselection 1002 allows the user to select a view of community page 1000.Currently the view selected is community metrics, and consequentlycommunity metrics view 1001 is displayed in FIG. 10. However, there maybe other views. Actions 1003 are links that initiate actions to performon the communities listed, such as deleting and/or editing theinformation listed about a community and/or the parameters of thecommunity. Community name 1004 is a list of the names of thecommunities. Language 1006 list the language of each community. Pageviews 1008 lists the number of webpage views that may be viewed within aparticular community. Registered users 1010 lists the number of usersthat have registered for a given community. Ideas 1012 lists the numberof ideas that have been posted within a particular community. Votes 1014lists the total number of votes cast within a community. Comments 1016lists the total number of comments posted within a community.

FIG. 11 shows a screenshot of an example of a community page 1000,showing a types-of-community view 1100. Community page 1000 includeshome tab 902, accounts tab 904, contacts tab 906, communities tab 908,ideas tab 908, reports tab 912, dashboard tab 914, search field 916,task menu 918, and recent items 946. Community page 1000 may alsoinclude types-of-community view 1100 having view selection 1002, actions1003, community name 1004, types of community 1102, step-1 1104 step-21106, and step-3 1108. In other embodiments, types-of-community view1100 may not have all of the elements listed and/or may have otherelements instead of or in addition to those listed.

Home tab 902, accounts tab 904, contacts tab 906, communities tab 908,ideas tab 908, reports tab 912, dashboard tab 914, search field 916,task menu 918, and recent items 946 were described in conjunction withFIG. 9, above. Community page 1000, view selection 1002, actions 1003,and community name 1004 were described in conjunction with FIG. 10,above.

Types-of-community view 1100 lists information about the types ofcommunities that currently exist and/or that a user is a member of.Types of community 1102 lists different types of communities, such ascustomer feed back (where customers post their thoughts and ideas aboutparticular products, suggest improvements to products, suggest newproducts, and/or ideas about product suggestions, for example),community driven news (where users post news that they have heard, suchas news about a particular industry, product, or product line, forexample), and local users group (where users discuss how to use theproduct and/or overcome difficulties, for example). Step-1 1104 step-21106, and step-3 1108 are a delineation of steps that the community isintended to accomplish, which thereby further define the community. Forexample, for a community that has a type of community new, step-1 1104may be post an article, step-2 1106 may be promote interesting stories,and step-3 1108 may be discuss with community. As another example, for acommunity that has a type of community new, step-1 1104 may be nominatea posting on a blog, step-2 1106 may be vote on one of the blog postsnominated, and step-3 1108 may be discuss with community. As anotherexample, for a community that has a type of local users group, step-11104 may be post an event, step-2 1106 may be vote on things that theusers are interested in, and step-3 1108 may be meet other users.

FIG. 12 shows a screenshot of an example of a community page 1000,showing a URL view 1200. Community page 1000 includes home tab 902,accounts tab 904, contacts tab 906, communities tab 908, ideas tab 908,reports tab 912, dashboard tab 914, search field 916, task menu 918, andrecent items 946. Community page 1000 may also include URL view 1200having view selection 1002, actions 1003, community name 1004, language1202, and URL 1204. In other embodiments, URL view 1200 may not have allof the elements listed and/or may have other elements instead of or inaddition to those listed.

Home tab 902, accounts tab 904, contacts tab 906, communities tab 908,ideas tab 908, reports tab 912, dashboard tab 914, search field 916,task menu 918, and recent items 946 were described in conjunction withFIG. 9, above. Community page 1000, view selection 1002, actions 1003,and community name 1004 were described in conjunction with FIG. 10,above.

URL View 1200 provides information about URLs of communities. Language1202 specifies the language associated with the community, which may bethe language in which most of the community members are expected to postinformation, may be the language in which the administrator postsinformation, and/or may be the language in which the static data (thedata that is not editable by the users) is posted. URL 1204 may be theURL of the home pages and/or the log-in pages of the community named bycommunity name 1004.

FIG. 13 shows a screenshot of an example of an ideas page 1300. Ideaspage 1300 includes home tab 902, accounts tab 904, contacts tab 906,communities tab 908, ideas tab 908, reports tab 912, dashboard tab 914,search field 916, task menu 918, and recent items 946. Ideas page 1300may also include view 1302, actions 1304, idea name 1306, idea name1308, votes 1310, and decayed votes 1312. In other embodiments, ideaspage 1300 may not have all of the elements listed and/or may have otherelements instead of or in addition to those listed.

Home tab 902, accounts tab 904, contacts tab 906, communities tab 908,ideas tab 908, reports tab 912, dashboard tab 914, search field 916,task menu 918, and recent items 946 were described in conjunction withFIG. 9, above. View selection 1002, actions 1003, and community name1004 were described in conjunction with FIG. 10, above.

Idea page 1300 displays a list of ideas and information about the ideas.View 1302 allows the user to select different views of the ideas, whichmay be different categories of ideas, such as new ideas, which are theideas that were posted after a certain date, popular ideas, which areideas that have received more than a certain threshold of votes, abuse,which are ideas that relate to handling abuse of the community webpagesor of other products and/or services, and/or mediation queue, which areideas that relate to the queue of disputes among community members thatthe administrator will moderate. Currently, the view that is selected in“All,” which displays all ideas that were posted. Actions 1304 areactions that may be performed to the idea, such as edit or delete theidea. Idea name 1308 lists the names of the ideas posted. Created date1308 is the date that the idea was created and/or posted. Votes 1310 isthe number of votes that an idea received. Decayed votes 1312 is a scorein which different votes are weighted differently. The score may givelower weights to older votes and/or may weight votes according to theperson or entity casting the vote (a more highly valued customer may begiven a vote with a greater weight than a less valued customer).

FIG. 14 shows a screenshot of an example of an idea-details view 1400.Idea-details view 1400 includes home tab 902, accounts tab 904, contactstab 906, communities tab 908, ideas tab 908, reports tab 912, dashboardtab 914, search field 916, task menu 918, and recent items 946.Idea-details view 1400 may include idea details 1402, idea name 1404,community 1406, category 1408, URL 1410, created by 1412, and lastmodified by 1414. Idea-details view 1400 may include votes section 1415,which may include votes 1416, down votes 1418, decayed votes 1420, andcomments 1422. Idea-details view 1400 may include moderation 1423, whichmay include status 1422 and flag 1425. Idea-details view 1400 mayinclude web activity 1426, which may include actions 1428, web activity1430, contact 1432, account 1434, and date 1436. In other embodiments,idea-details view 1300 may not have all of the elements listed and/ormay have other elements instead of or in addition to those listed.

Home tab 902, accounts tab 904, contacts tab 906, communities tab 908,ideas tab 908, reports tab 912, dashboard tab 914, search field 916,task menu 918, and recent items 946 were described in conjunction withFIG. 9, above.

Idea details 1402 may be a section of idea-details view 1400 thatdescribes details of the idea. Idea name 1404 may be the name of thecurrent idea. Community 1406 may be the community within which the ideawas posted. Category 1408 is a category within which the idea wasclassified. URL 1410 is a URL at which the idea may be found. Created by1412 is the name of the person that created the idea. Last modified by1414 is the name of the person that last modified the idea. In anembodiment, after the idea is created, the value of last modified by1414 is the same as created by 1412 until another person modifies theidea. Votes section 1415 may include information related to votes thatwere cast in relation to the current idea. Votes 1416 is the actualnumber of votes that were cast for the idea. Down votes 1418 is thenumber of votes that were cast against the idea. Decayed votes 1420 isthe score of the weighted votes, which was discussed above inconjunction with decayed votes 1312 (FIG. 13). Comments 1422 are thenumber of comments about the current idea. Moderation 1423 is a sectionof idea-details view 1400 that includes information about any moderationactivity that may have occurred in conjunction with the current idea.Status 1422 gives the status of the idea. Some examples of possiblevalues for status 1422 are published, deleted, and unpublished. Flag1425 is a flag which may be on or off depending upon whether an abuse oran activity that is suspected of being an abuse has occurred. Webactivity 1426 is a section of idea-details view 1400 that givesinformation about web activity that occurred in conjunction with thecurrent idea. Actions 1428 may initiate the performance of actions thatmay be performed on the idea, such as editing or deleting the idea. Webactivity 1430 may list types of web activity that may have occurred inconjunction with the current idea, such as a vote being cast for oragainst the idea and/or a comment being posted. Contact 1432 may listthe name of the person that that is to be contacted about an activity,such as a web activity, which may be the person that performed the webactivity. Account 1434 may list the account with which the person namedin contact 1432 is associated, such as the name of the company and/ordivision of a company for which the contact works. Date 1436 is the dateon which the web activity associated with the current idea occurred.

FIG. 15 shows a screenshot of an example of a dashboard 1500. Dashboard1500 includes home tab 902, accounts tab 904, contacts tab 906,communities tab 908, ideas tab 908, reports tab 912, dashboard tab 914,search field 916, task menu 918, and recent items 946. Dashboard 1500may include articles tab 1502, moderate tab 1504, unique visitors 1506,community name column 1508, sum of unique visitors 1510, page views1512, sum of page views 1514, ideas 1516, sum of ideas 1518, comments1520, sum of comments 1522, votes 1524, accounts column 1526, sum ofvotes 1528, ideas submitted 1530, sum of ideas 1532, comments 1534, sumof comments 1536, props 1538, sum of props 1540. In other embodiments,dashboard 1500 may not have all of the elements listed and/or may haveother elements instead of or in addition to those listed.

Home tab 902, accounts tab 904, contacts tab 906, communities tab 908,ideas tab 908, reports tab 912, dashboard tab 914, search field 916,task menu 918, and recent items 946 were described in conjunction withFIG. 9, above.

Dashboard 1500 shows a summary of information associated with a tenant.Dashboard 1500 may be part of a different embodiment than FIGS. 9-14. Inan embodiment, dashboard 1500 has the same set of tabs as the pagesshown in FIGS. 9-14. In another embodiment, the pages of FIGS. 9-14 havethe same set of tabs as illustrated in FIG. 15 on dashboard 1500.Articles tab 1502, when selected brings a user to a page for viewinginformation about articles. In this specification, the words “article”and “idea” are used interchangeably and one may be substituted foranother to obtain different embodiments. Moderate tab 1504, whenselected brings a user to a page where information about ideas and/orweb activity that is being moderated is presented.

Unique visitors 1506 is a section of dashboard 1500 that display thenumber of unique visitors that visit each community. Community namecolumn 1508 is a column that lists the names of communities about whichinformation is presented in the next column. Community name columnextends down through each of the sections below unique visitors. Sum ofunique visitors 1510 is the sum of the unique visitors for eachcommunity listed in community name column 1508 (in this specification,the phrase total number may be substituted for the word sum where everthe word sum appears). Page views 1512 is a section of dashboard 1500that lists the number of page views that are included in each community.Sum of page views 1514 lists the sum of the page views for thecorresponding community named in the same row in community name column1508. Ideas 1516 is a section of dashboard 1500 that lists the number ofideas that have been posted in each community. Sum of ideas 1518 liststhe sum of the ideas posted in the corresponding community named in thesame row in community name column 1508. Comments 1520 is a section ofdashboard 1500 that lists the number of comments that have been postedin each community. Sum of comments 1522 lists the sum of the commentsposted in the corresponding community named in the same row in communityname column 1508.

Votes 1524 is a section of dashboard 1500 that lists the number of votesthat have been cast in each account. Accounts column 1526 lists names ofaccounts that are owned by the tenant and with which the communities areassociated. Accounts column 1526 is a column that lists the names ofaccounts about which information is presented in the next column.Accounts column 1526 extends down through each of the sections belowvotes 1524. Sum of votes 1528 lists the sum of the votes cast in thecorresponding account named in the same row in account column 1526.Ideas submitted 1530 is a section of dashboard 1500 that lists thenumber of ideas that have been posted in each account. Sum of articles1532 lists the sum of the articles posted in the corresponding accountsnamed in the same row in account column 1526. Comments 1534 is a sectionof dashboard 1500 that lists the number of comments that have beenposted in each account. Sum of comments 1536 lists the sum of thecomments posted in the corresponding accounts named in the same row inaccount column 1526. Props 1538 is a section of dashboard 1500 thatlists the number of pops that have been posted in each account. Sum ofprops 1540 lists the sum of the props posted in the correspondingaccounts named in the same row in account column 1526.

Server-Side Method of Creating a Community On-Demand

FIG. 16 is a flowchart of an embodiment of a server-side method 1600 ofcreating a community on-demand. In step 1602, a webpage is sent to auser of a tenant (e.g., administrator, another employee, or a customerof a tenant). The webpage includes one or more links that initiateand/or facilitate creating a community with self-forming groups. Forexample, creating a community may include creating a community webpagepopulated with ideas and adding members to the community. In step 1604,a request is received from the user associated with the tenant at theserver to create a community. The request may include a request tocreate a webpage for the community. In optional step 1606, a set of oneor more ideas are sent to populate the webpage. The ideas relate to aparticular topic or set of topics that the community members areexpected to be concerned with. In step 1608, the community web pages aresent to the administrator and/or one or more members of the community.In an embodiment, step 1606 may be performed prior step 1608. In step1610, a request is received at the server for adding a community member.Optionally, a request may include a request for adding several membersat once. Optionally, prior to becoming members, an invitation to jointhe community is sent to the potential new member. In step 1612, themember is added to the community. In step 1614, a webpage is sent to theuser with the new member added. In optional step 1616, a webpage is sentto the new member showing the new member as a member and/or an emailconfirmation may be sent to the member confirming their membership. Inan embodiment, steps 1610, 1612, 1614, and/or 1616 may be performedmultiple times (e.g., each time a new member or group of members isadded) and may be performed before steps 1608 and/or 1606.

In an embodiment, each of the steps of method 1600 is a distinct step.In another embodiment, although depicted as distinct steps in FIG. 16,step 1602-1616 may not be distinct steps. In other embodiments, methodxxx may not have all of the above steps and/or may have other steps inaddition to or instead of those listed above. The steps of method xxxmay be performed in another order. Subsets of the steps listed above aspart of method 1600 may be used to form their own method.

Client-Side Method of Creating a Community On-Demand

FIG. 17 is a flowchart of an embodiment of a client-side method 1700 ofcreating a community on demand. In step 1702, a webpage is received by auser of a tenant from the server. The webpage may be the one sent instep 1602 and may include one or more links that initiate and/orfacilitate creating a community with self-forming groups. For example,creating a community may include creating a community webpage populatedwith ideas and adding members to the community. In step 1704, a requestis sent from the user to the server to create a community. The requestmay include a request to create a webpage for the community. In optionalstep 1706, a set of one or more ideas are sent from the user to theserver for populating the webpage. The ideas may relate to a particulartopic or set of topics that the community members are expected to beconcerned with. In step 1708, the community webpages are received by theadministrator and/or one or more members of the community. In anembodiment, step 1706 may be performed prior step 1708. In step 1710, arequest is sent from the user to the server for adding a communitymember. Optionally, the request may include a request for adding severalmembers at once and/or for sending invitation to the potential newmembers to become members. In optional step 1712, a webpage is receivedby the user showing the new member as a member and/or an emailconfirmation may be received by the member confirming their membership.In optional step 1714, a webpage is received by the new member showingthe new member as a member and/or an email confirmation may be receivedby the member confirming their membership. In an embodiment, steps 1710,1712, and/or 1714 may be performed multiple times (e.g., each time a newmember or group of members is added) and may be performed before steps1708 and/or 1706.

In an embodiment, each of the steps of method 1700 is a distinct step.In another embodiment, although depicted as distinct steps in FIG. 17,step 1702-1714 may not be distinct steps. In other embodiments, methodxxx may not have all of the above steps and/or may have other steps inaddition to or instead of those listed above. The steps of method 1700may be performed in another order. Subsets of the steps listed above aspart of method 1700 may be used to form their own method.

Using a Website Having Communities that were Created On-Demand

FIG. 18 is a flowchart of an embodiment of a method 1800 for managing anon-demand community website. In step 1804, a webpage is presented to auser that gives a user a choice of whether to login or sign up to becomea member. If the user decides to sign up, the method continues with step1806, where the user signs up. In step 1808, if necessary, storage isallocated for the new member. After step 1808, method 1800 proceeds tostep 1812. Returning to step 1804, if the user decides to login, method1800 continues to step 1810. At step 1810, the user logs in, and thenthe method continues to step 1812. In step 1812, the user is presentedwith a webpage that has several options. From the options the user mayperform any of another of steps by either directly selecting one of thelinks of the current page or by selecting a link that leads to anotherlink or by selecting each of several links in a chain of links, whichallows the user to perform one of many tasks. Consequently, after step1812, the user may select any of steps 1811-1834. After each of steps1811-1834, the user may return to step 1812. At different times thewebpage viewed in step 1812 may be different. In step 1811, if selected,the user may delete the account. In step 1814, the user may viewactivities on the community website. In step 1816, the user may join acommunity. There may be several communities, and the user may have theoption of which communities to join. In step 1818, the user may start awebsite for a community on demand. In step 1820, the user may modify theaccount by, for example, changing the services being purchased or bydeleting the account. In step 1822, the user may send a message. Themessage may be a request to join the community or may be a message lefton a profile or sent to a profile owner as a result of selecting a linkon profile 600 (FIG. 6) to send a message. In step 1824, the user maymanage their profile and/or friends pages, such as by starting a newfriends and/or profile page, adding new information to existing friendsor profile pages, or by changing the current content. In step 1826, theuser manages ideas. As part of step 1826, ideas may be modified and/orposted. In step 1828, the user manages comments. As part of step 1828,comments may be modified and/or posted. In step 1830, the user manageswidgets. As part of step 1830, the widgets may be modified and/orcreated. In step 1832, the user manages RSS feeds. As part of step 1832,the RSS feeds may be modified and/or created. In step 1834, the userlogs off.

At each of the steps of method 1800 there may be three sub-steps thatare performed on the server side and two sub-steps that are performed onthe client side. On the server side, the server receives a request toperform the step, the server performs the step, and then the serversends the results to the user. On the client side, the user sends arequest to perform the step, and the client receives the result of theserver responding to the request. In an embodiment, each of the steps ofmethod 1800 is a distinct step. In another embodiment, although depictedas distinct steps in FIG. 18, step 1802-1832 may not be distinct steps.In other embodiments, method 1800 may not have all of the above stepsand/or may have other steps in addition to or instead of those listedabove. The steps of method 1800 may be performed in another order.Subsets of the steps listed above as part of method 1800 may be used toform their own method.

Method for Using the Environment (FIGS. 1 and 2)

FIG. 19 shows a flowchart of an example of a method 1900 of usingenvironment 10. In step 1910, user system 12 (FIGS. 1 And 2) establishesan account. In step 1912, one more tenant process space 104 (FIG. 2) areinitiated on behalf of user system 12, which may also involve settingaside space in tenant space 112 (FIG. 2) and tenant data 114 (FIG. 2)for user system 12. Step 1912 may also involve modifying applicationmetadata to accommodate user system 12. In step 1914, user system 12uploads data. In step 1916, one or more data objects are added to tenantdata 114 where the data uploaded is stored. In step 1918, the methodsassociated with FIGS. 3-18 may be implemented. In an embodiment, each ofthe steps of method 1900 is a distinct step. In another embodiment,although depicted as distinct steps in FIG. 19, step 1902-1918 may notbe distinct steps. In other embodiments, method 1900 may not have all ofthe above steps and/or may have other steps in addition to or instead ofthose listed above. The steps of method 1900 may be performed in anotherorder. Subsets of the steps listed above as part of method 1900 may beused to form their own method.

Method for Creating the Environment (FIGS. 1 and 2)

FIG. 20 is a method of making environment 10, in step 2002, user system12 (FIGS. 1 And 2) is assembled, which may include communicativelycoupling one or more processors, one or more memory devices, one or moreinput devices (e.g., one or more mice, keyboards, and/or scanners), oneor more output devices (e.g., one more printers, one or more interfacesto networks, and/or one or more monitors) to one another.

In step 2004, system 16 (FIGS. 1 and 2) is assembled, which may includecommunicatively coupling one or more processors, one or more memorydevices, one or more input devices (e.g., one or more mice, keyboards,and/or scanners), one or more output devices (e.g., one more printers,one or more interfaces to networks, and/or one or more monitors) to oneanother. Additionally assembling system 16 may include installingapplication platform 18, network interface 20, tenant data storage 22,system data storage 24, system data 25, program code 26, process space28, UI 30, API 32, PL/SOQL 34, save routine 36, application setupmechanism 38, applications servers 100 ₁-100 _(N), system process space102, tenant process spaces 104, tenant management process space 110,tenant space 112, tenant data 114, and application metadata 116 (FIG.2).

In step 2006, user system 12 is communicatively coupled to network 104.In step 2008, system 16 is communicatively coupled to network 104allowing user system 12 and system 16 to communicate with one another(FIG. 2). In step 2010, one or more instructions may be installed insystem 16 (e.g., the instructions may be installed on one or moremachine readable media, such as computer readable media, therein) and/orsystem 16 is otherwise configured for performing the steps of methodsassociated with FIGS. 3-18. For example, as part of step 2010, one ormore instructions may be entered into the memory of system 16 forproviding and using on-demand communities. In an embodiment, each of thesteps of method 2000 is a distinct step. In another embodiment, althoughdepicted as distinct steps in FIG. 20, step 2002-2010 may not bedistinct steps. In other embodiments, method 2000 may not have all ofthe above steps and/or may have other steps in addition to or instead ofthose listed above. The steps of method 2000 may be performed in anotherorder. Subsets of the steps listed above as part of method 2000 may beused to form their own method.

EXTENSIONS AND ALTERNATIVES

While the invention has been described by way of example and in terms ofthe specific embodiments, it is to be understood that the invention isnot limited to the disclosed embodiments. To the contrary, it isintended to cover various modifications and similar arrangements aswould be apparent to those skilled in the art. Therefore, the scope ofthe appended claims should be accorded the broadest interpretation so asto encompass all such modifications and similar arrangements.

1-10. (canceled)
 11. A method, comprising: storing, by a computingsystem, information for multiple linked web pages of an online communityimplemented on a software-as-a-service platform; adding, by thecomputing system in response to a first user request, one or morecontent items to a first page of the plurality of linked web pages ofthe online community; adding, by the computing system in response to asecond user request, a connector widget to a selected content item ofthe online community, wherein selected content item is accessible via asecond page of the plurality of linked web pages that is different thanthe first page and wherein the connector widget displays informationthat is based on other content posted by users such that the displayedinformation is updated based on changes to the other content; executingthe connector widget, during a first time interval, to displayinformation from at least one of the one or more added content items;and executing the connector widget, during a second time interval, todisplay different information from one or more content items added tothe first page after the first time interval.
 12. The method of claim11, wherein the second page displays a dashboard.
 13. The method ofclaim 12, wherein the dashboard includes multiple widgets and alsodisplays one or more statistics for the online community and data basedon one or more reports for the online community.
 14. The method of claim11, further comprising: adding, in response to a user request, anotification widget; and alerting, by executing the notification widget,a user based on an update to content on the online community.
 15. Themethod of claim 14, wherein the alert includes a link to the updatedcontent.
 16. The method of claim 11, wherein the second page includesmultiple different selectable tabs and the connector widget is includedon one of the selectable tabs.
 17. The method of claim 11, wherein thesecond page includes a plurality of widgets that, in combination, store,process, and display information associated with the second page, inresponse to user interaction.
 18. The method of claim 11, furthercomprising: adding, in response to a user request, a voting widget;wherein the connection widget displays at least a portion of votingresults from the voting widget.
 19. The method of claim 11, furthercomprising: adding, in response to a user request, a messaging widget.20. The method of claim 11, further comprising: displaying a list ofpre-tested widgets for selection to add one or more of the pre-testedwidgets to a web page in the online community.
 21. The method of claim11, wherein at least one of the one or more added content items aremedia content items.
 22. The method of claim 11, further comprising:adding, in response to a user request, a feed widget that displays alist of recent activities associated with at least a portion the onlinecommunity.
 23. The method of claim 11, wherein the second user requestincludes a code snippet for the connector widget.
 24. The method ofclaim 11, further comprising: adding, in response to user input, aparticular widget to a template web page.
 25. The method of claim 11,wherein the online community is a self-formed group that the computingsystem is configured to generate based on users in the self-formed groupadding one another as contacts.
 26. The method of claim 11, furthercomprising: adding, in response to user input, a related-to widget to aparticular web page that displays links to content related to aparticular content item displayed on the particular web page.
 27. Anon-transitory, computer-readable medium having computer instructionsstored thereon that are executable by a computing system to causeoperations comprising: storing information for multiple linked web pagesof an online community implemented on a software-as-a-service platform;adding, in response to a first user request, one or more content itemsto a first page of the plurality of linked web pages of the onlinecommunity; adding, in response to a second user request, a connectorwidget to a selected content item of the online community, whereinselected content item is accessible via a second page of the pluralityof linked web pages that is different than the first page and whereinthe connector widget displays information that is based on other contentposted by users such that the displayed information is updated based onchanges to the other content; executing the connector widget, during afirst time interval, to display information from at least one of the oneor more added content items; and executing the connector widget, duringa second time interval, to display different information from one ormore content items added to the first page after the first timeinterval.
 28. The non-transitory, computer-readable medium of claim 27,wherein the second page displays a dashboard that includes multiplewidgets.
 29. A method, comprising: storing, by a computing system,information for multiple linked web pages of an online communityimplemented on a software-as-a-service platform; adding, by thecomputing system in response to a first user request, one or morecontent items to a first page of the plurality of linked web pages ofthe online community; adding, by the computing system in response to asecond user request, a connector widget to a selected content item ofthe online community, wherein selected content item is accessible via asecond page of the plurality of linked web pages that is different thanthe first page and wherein the connector widget displays informationthat is based on other content posted by users such that the displayedinformation is updated based on changes to the other content; executingthe connector widget, during a first time interval, to displayinformation from at least one of the one or more added content items;executing the connector widget, during a second time interval, todisplay different information from one or more content items added tothe first page after the first time interval; adding, by the computingsystem in response to a third user request, a voting results widget tothe at least a second one of the plurality of linked web pages; andexecuting the voting results widget to display different vote statisticsat different times based on user input to a voting widget displayed onanother one of the plurality of web pages.
 30. The method of claim 29,wherein the second page displays multiple different selectable tabs andincludes different widgets on multiple ones of the selectable tabs.